[KR] Advanced XSLeaks Research: Comprehensive Analysis of Browser-Based Information Disclosure Techniques — Part 0

What is XSLeaks

Client-Side에서 가장 위험도가 높은 취약점이라고 하면 단연 Cross-Site-Scripting(XSS)일 것이다. 브라우저의 JavaScript 실행 흐름을 조작할 수 있다면 사용자의 쿠키를 탈취하여 세션을 탈취하거나 다른 사용자의 권한으로 서버에 요청을 보내는 CSRF 공격도 발생시킬 수 있다.

그러나 최근의 웹 환경에서는 CSP(Content Security Policy)나 SOP(Same Origin Policy)와 같은 보안 정책이 적용되면서, 임의의 스크립트를 자유롭게 삽입하거나 크로스 오리진에서 정보를 직접 읽는 것이 점점 더 어려워지고 있다. 이러한 제한 환경에서 유용하게 활용되는 공격 기법이 XSLeaks 취약점이다.

**XSLeaks(Cross-Site Leaks)**는 웹 브라우저의 미묘한 동작 차이를 악용하여, 크로스 오리진 자원에 직접 접근하지 않고도 민감한 정보를 유추하는 공격 기법이다.

브라우저의 동작 차이에는 응답 여부, 에러 발생 여부, 로딩 시간 등이 있으며, 이러한 차이를 기반으로 정보를 추론한다. 각 기법에 대한 자세한 내용은 이후 포스트에서 다룰 예정이다.

XSLeaks는 공격자가 피해자로 하여금 자신이 운영하는 웹사이트에 접속하도록 유도한 뒤, 해당 사이트 내에서 피해자가 타 오리진의 리소스와 강제로 상호작용하도록 유발하는 방식으로 수행된다. 이를 통해 공격자는 Cross-Site에서 피해자와 관련된 다양한 정보를 추출할 수 있다.

XSLeaks History

XSLeaks 공격은 2000년경부터 관련 사례가 기록되어 왔다.

해당 주제에 관한 최초의 논문 중 하나는 퍼듀 대학교(Purdue University)에서 발표되었으며, 웹 캐시를 악용하여 크로스 사이트의 정보를 추출하는 기법을 다루고 있다.

이 논문을 시작으로 XSLeaks는 점차 더 정교하고 다양하게 발전해 왔으며, 이에 대응하기 위해 Chrome, Firefox와 같은 주요 브라우저들도 지속적으로 보안 업데이트를 통해 해당 기법들을 차단하거나 완화하고 있다.

2017년 이전에는 웹사이트의 작동 방식에 내재된 구조적 한계로 인해, XSLeaks 공격을 방어하는 것이 매우 어렵다고 여겨졌다. 그러나 2017년 이후부터는 이러한 공격을 방어하기 위한 다양한 HTTP 확장 기능들이 도입되기 시작했다. 대표적으로 SameSite 쿠키 정책을 통해, 크로스 오리진 사이트에서 민감한 쿠키에 접근하는 행위를 차단할 수 있게 되었다.

현대의 XSLeaks 기법은 그 공격 방식이 점점 더 다양하고 정교해지고 있다. 예를 들어, 2023년 이후에는 운영체제와 브라우저 환경의 제한을 이용해 정보를 유출하는 기법이 등장했으며, HTTP 요청의 미세한 시간 차이를 정밀하게 측정해 민감한 데이터를 추론하는 방식도 연구되고 있다.

Research Objectives

XSLeaks 기법들을 학습하기 위한 가장 좋은 레퍼런스로는 https://xsleaks.dev/ 가 있을 것이다. 해당 사이트는 현재 웹 상에서 존재하는 거의 모든 XSLeaks 공격 기법들과 관련 레퍼런스를 짧게 정리하여 모아놓은 아카이브 사이트이다.

많은 기법들이 정리되어 있는 만큼, 많은 사람들이 XSLeaks 기법을 학습할때 해당 사이트를 이용하여 공부를 진행하고 학습하는 경우가 굉장히 많다.

본 리서치에 등장하는 모든 기법들과 내용들도 모두 https://xsleaks.dev/ 에 존재하는 기법들을 상당 수 인용하였다.

이미 많은 기법들과 관련 정리가 잘 되어있는 레퍼런스가 있음에도 불구하고 본 리서치를 진행한 이유는 해당 사이트는 XSLeaks 기법들을 학습하기 위한 목적이 아닌 아카이브 목적으로 정리한 부분이 크다고 느꼈기 때문이다.

해당 사이트에서 글을 읽어본 필자는 정리되어있는 내용을 한번에 이해하고 습득하기가 어려웠다. 여러 기법들이 정리되어 있다 보니 각 기법들에 대한 설명이 일부 생략되어 있거나 요약된 느낌이 강했기 때문이다.

이를 이유로 글을 읽고 나서도 항상 아래와 같은 의문점들이 머리를 맴돌았다.

  • “실제로 이게 그래서 왜 취약한 거지?”
  • “이게 정말 취약한 부분이 맞는건가? 당연한 내용이 아닌가?”
  • “실제 리얼월드에서는 어떤식으로 악용이 되길래 해당 기법들을 정리해 놓은걸까?”

사이트에 정리되어있는 모든 기법들이 모두 다 위 의문점이 들었던 것은 아니지만, 상당수 많은 기법들에 대한 정리를 읽어보면서 위 질문들이 머리를 맴돌았다.

필자는 XSLeaks 기법들이 실제로 리얼월드 또는 CTF에서 어떻게 사용되고 악용될 수 있는지 또는 실제로 어떤 케이스가 있었는지가 근본적으로 궁금하였으나 이 질문들이 명쾌하게 해결되지 않았다.

이를 이유로 XSLeaks 기법들을 조금 더 자세하게 개념적으로 설명하고, 실제 이 기법들이 왜 위험한지 어떤 실제 사례가 있었는지를 주로 연구하고자 본 리서치를 진행하게 되었다.

따라서 본 리서치는 모든 XSLeaks 기법들을 다루는 것이 아닌 특정 기법들에 대해서만 깊게 파고든다.

XSLeaks 중에서 해당 기법이 정확히 무엇이고 실제 발생 사례를 기반한 케이스 스터디를 통해 왜 해당 기법이 위험한 것인가? 그리고 CTF와 같은 부분에서 어떤 식으로 해당 기법들이 사용/응용될 수 있는가? 에 대한 질문에 답변하기 위한 리서치를 진행하였다.

본 리서치에서는 대표적으로 아래의 XSLeaks 기법들에 대한 탐구를 진행한다. 8가지 기법들을 모두 한 페이지에서 다룰 경우 양이 상당히 길어지고 복잡해진다. 따라서 본 주제에 대한 리서치는 시리즈로 총 3파트로 나누어서 발행하였다. 파트별로 다루는 기법의 내용이 모두 다르기 때문에 아래를 참고하여 원하는 파트의 리서치를 확인하는 것을 추천한다.

  • PART 1
    • CSS Tricks
    • Error events
    • Navigations
  • PART 2
    • Frame Counting
    • PostMessage broadcasts
    • Browser features
  • PART 3
    • Timing Attakcs
    • Experimnts